■すごろくのサイコロを作ってみる
サイコロを転がすソースを、覚書の意味も含めてアップしておきます。
以下のソースでは、すごろくでサイコロを振り
プレイヤーが出た目の分だけキャラクターを動かすというソースになります。
悪戦苦闘したため無駄が多く、自分用の覚書なので
わかりにくいうえにながいです。
※ピンクは加筆になります。
まず、サイコロを振ってもいい場面か判断させています。
フィールドマップのときや戦闘のときだけサイコロを振らせたいので
変数に10が代入されないかぎり、このイベントが起きないようにしています。
▼ 変数で、サイコロを振ってもいい場面か判断
■条件分岐(変数): 【1】V2[サイコロを振ってもいいか判断]が10と同じ
◇分岐: 【1】 [ V2[サイコロを振ってもいいか判断]が10と同じ ]の場合↓
=サイコロを振ってもいい場合
|■ウェイト:10 フレーム
次に、画面のどこにサイコロ画像を表示するかを決めます。
表示する場所のX座標とY座標を決めたら、コモンEVセルフ変数に、X座標、Y座標の数値を覚えさせます。
|
▼ セルフ0がX座標、セルフ1がY座標
|■変数操作: このコモンEvセルフ0 = 200 + 0
|■変数操作: このコモンEvセルフ1 = 200 + 0
さて、1~6のサイコロの画像がどんどん切り替わっていく処理を作ります。
1、2、3、4、5、6という数字のどれかを表示する という処理を、
決定キーが押されるまで何度もループするようにすればできますね。
|■ループ開始
||■変数操作: V1[サイコロのランダム数字用] = 1 ~ 6
=1~6の数字のどれかが、変数V1にランダムに入ります。
||
▼ セルフ2はキー入力記憶用
||■キー入力:このコモンEvセルフ変数2 / 決定(10) キャンセル(11)
||■条件分岐(変数): 【1】このコモンEvセルフ2が10未満
=何もキーが押されていない場合。
|| ◇分岐: 【1】 [ このコモンEvセルフ2が10未満 ]の場合↓
|||■条件分岐(変数): 【1】V1[サイコロのランダム数字用]が1と同じ
=ランダム変数が1の場合、1のサイコロ画像を表示するための条件わけ
||| ◇分岐: 【1】 [ V1[サイコロのランダム数字用]が1と同じ ]の場合↓
||||■ピクチャ表示:1 [左上]ファイル「Picture1.png」 X:このコモンEvセルフ0 Y:このコモンEvセルフ1 0(0)フレーム
||||■
|||◇分岐終了◇◇
|||■条件分岐(変数): 【1】V1[サイコロのランダム数字用]が2と同じ
||| ◇分岐: 【1】 [ V1[サイコロのランダム数字用]が2と同じ ]の場合↓
||||■ピクチャ表示:1 [左上]ファイル「Picture2.png」 X:このコモンEvセルフ0 Y:このコモンEvセルフ1 0(0)フレーム
||||■
|||◇分岐終了◇◇
|||■条件分岐(変数): 【1】V1[サイコロのランダム数字用]が3と同じ
||| ◇分岐: 【1】 [ V1[サイコロのランダム数字用]が3と同じ ]の場合↓
||||■ピクチャ表示:1 [左上]ファイル「Picture3.png」 X:このコモンEvセルフ0 Y:このコモンEvセルフ1 0(0)フレーム
||||■
|||◇分岐終了◇◇
|||■条件分岐(変数): 【1】V1[サイコロのランダム数字用]が4と同じ
||| ◇分岐: 【1】 [ V1[サイコロのランダム数字用]が4と同じ ]の場合↓
||||■ピクチャ表示:1 [左上]ファイル「Picture4.png」 X:このコモンEvセルフ0 Y:このコモンEvセルフ1 0(0)フレーム
||||■
|||◇分岐終了◇◇
|||■条件分岐(変数): 【1】V1[サイコロのランダム数字用]が5と同じ
||| ◇分岐: 【1】 [ V1[サイコロのランダム数字用]が5と同じ ]の場合↓
||||■ピクチャ表示:1 [左上]ファイル「Picture5.png」 X:このコモンEvセルフ0 Y:このコモンEvセルフ1 0(0)フレーム
||||■
|||◇分岐終了◇◇
|||■条件分岐(変数): 【1】V1[サイコロのランダム数字用]が6と同じ
||| ◇分岐: 【1】 [ V1[サイコロのランダム数字用]が6と同じ ]の場合↓
||||■ピクチャ表示:1 [左上]ファイル「Picture6.png」 X:このコモンEvセルフ0 Y:このコモンEvセルフ1 0(0)フレーム
||||■
|||◇分岐終了◇◇
|||■サウンド:SE ファイル[SESelect.wav] 音 100% 周 100% 再生 / 遅延:0フレーム
=サイコロ画像が切り替わる度に音が出るようにしました。
|||■
||◇分岐終了◇◇
||■条件分岐(変数): 【1】このコモンEvセルフ2が11と同じ
=キャンセルキーが押されたとき
|| ◇分岐: 【1】 [ このコモンEvセルフ2が11と同じ ]の場合↓
|||■
||◇分岐終了◇◇
決定キーが押された時の対応です。
同じように画像を表示するとともに、ループを中断してもらいましょう。
||■条件分岐(変数): 【1】このコモンEvセルフ2が10と同じ
|| ◇分岐: 【1】 [ このコモンEvセルフ2が10と同じ ]の場合↓
|||■条件分岐(変数): 【1】V1[サイコロのランダム数字用]が1と同じ
||| ◇分岐: 【1】 [ V1[サイコロのランダム数字用]が1と同じ ]の場合↓
||||■ピクチャ表示:1 [左上]ファイル「Picture1.png」 X:このコモンEvセルフ0 Y:このコモンEvセルフ1 0(0)フレーム
||||■
|||◇分岐終了◇◇
|||■条件分岐(変数): 【1】V1[サイコロのランダム数字用]が2と同じ
||| ◇分岐: 【1】 [ V1[サイコロのランダム数字用]が2と同じ ]の場合↓
||||■ピクチャ表示:1 [左上]ファイル「Picture2.png」 X:このコモンEvセルフ0 Y:このコモンEvセルフ1 0(0)フレーム
||||■
|||◇分岐終了◇◇
|||■条件分岐(変数): 【1】V1[サイコロのランダム数字用]が3と同じ
||| ◇分岐: 【1】 [ V1[サイコロのランダム数字用]が3と同じ ]の場合↓
||||■ピクチャ表示:1 [左上]ファイル「Picture3.png」 X:このコモンEvセルフ0 Y:このコモンEvセルフ1 0(0)フレーム
||||■
|||◇分岐終了◇◇
|||■条件分岐(変数): 【1】V1[サイコロのランダム数字用]が4と同じ
||| ◇分岐: 【1】 [ V1[サイコロのランダム数字用]が4と同じ ]の場合↓
||||■ピクチャ表示:1 [左上]ファイル「Picture4.png」 X:このコモンEvセルフ0 Y:このコモンEvセルフ1 0(0)フレーム
||||■
|||◇分岐終了◇◇
|||■条件分岐(変数): 【1】V1[サイコロのランダム数字用]が5と同じ
||| ◇分岐: 【1】 [ V1[サイコロのランダム数字用]が5と同じ ]の場合↓
||||■ピクチャ表示:1 [左上]ファイル「Picture5.png」 X:このコモンEvセルフ0 Y:このコモンEvセルフ1 0(0)フレーム
||||■
|||◇分岐終了◇◇
|||■条件分岐(変数): 【1】V1[サイコロのランダム数字用]が6と同じ
||| ◇分岐: 【1】 [ V1[サイコロのランダム数字用]が6と同じ ]の場合↓
||||■ピクチャ表示:1 [左上]ファイル「Picture6.png」 X:このコモンEvセルフ0 Y:このコモンEvセルフ1 0(0)フレーム
||||■
|||◇分岐終了◇◇
|||■サウンド:SE ファイル[SEEnter.wav] 音 100% 周 100% 再生 / 遅延:0フレーム
||||■
|||◇分岐終了◇◇
|||■ループ中断
|||■
||◇分岐終了◇◇
||■ウェイト:1 フレーム
||■
|◇ループここまで◇◇
次に、出た目の数の分だけ、キャラクターが動けるようにします。
一つ動くたびに、ランダムで出たサイコロの数値が減っていき
ゼロになったら動けないようにします。
つまり、ゼロになるまで動き続けるループですね。
移動可能でない方向に移動しようとした場合、動いたとカウントされないようにしましょう。
|
▼ セルフ3が主人公のx、セルフ4が主人公Y座標
|■ループ開始
||■変数操作: このコモンEvセルフ3 = 主人公のX座標(マップ) + 0
||■変数操作: このコモンEvセルフ4 = 主人公のY座標(マップ) + 0
||■条件分岐(変数): 【1】V1[サイコロのランダム数字用]が1以上
|| ◇分岐: 【1】 [ V1[サイコロのランダム数字用]が1以上 ]の場合↓
|||
▼ セルフ10がキー入力を記憶
|||■キー入力:このコモンEvセルフ変数10 / [入力待ち] 4方向
|||■条件分岐(変数): 【1】このコモンEvセルフ10が2と同じ
||| ◇分岐: 【1】 [ このコモンEvセルフ10が2と同じ ]の場合↓
||||
▼ 2が押された時、主人公のY座標が1つ↓の位置が移動可能か
||||
▼ タイル番号を読みこませて判断させている。
=移動してもいいチップは、タイル番号を1以上に設定してます。
タイル番号は、タイル設定(通行設定とかやるやつ)を開いて設定できますよ。
||||■変数操作: このコモンEvセルフ4 += 1 + 0
||||■変数操作+: このコモンEvセルフ11 = X:このコモンEvセルフ3 Y:このコモンEvセルフ4のタイルのタグ番号
||||■条件分岐(変数): 【1】このコモンEvセルフ11が1以上
|||| ◇分岐: 【1】 [ このコモンEvセルフ11が1以上 ]の場合↓
|||||■動作指定:主人公 / 下向 / 下
|||||■変数操作: V1[サイコロのランダム数字用] -= 1 + 0
|||||■サウンド:SE ファイル[SESelect.wav] 音 100% 周 100% 再生 / 遅延:0フレーム
|||||■動作完了までウェイト
|||||■
||||◇分岐終了◇◇
||||■
|||◇分岐終了◇◇
|||
▼ ←を押したとき
|||■条件分岐(変数): 【1】このコモンEvセルフ10が4と同じ
||| ◇分岐: 【1】 [ このコモンEvセルフ10が4と同じ ]の場合↓
||||■変数操作: このコモンEvセルフ3 -= 1 + 0
||||■変数操作+: このコモンEvセルフ11 = X:このコモンEvセルフ3 Y:このコモンEvセルフ4のタイルのタグ番号
||||■条件分岐(変数): 【1】このコモンEvセルフ11が1以上
|||| ◇分岐: 【1】 [ このコモンEvセルフ11が1以上 ]の場合↓
|||||■動作指定:主人公 / 左向 / 左
|||||■変数操作: V1[サイコロのランダム数字用] -= 1 + 0
|||||■サウンド:SE ファイル[SESelect.wav] 音 100% 周 100% 再生 / 遅延:0フレーム
|||||■動作完了までウェイト
|||||■
||||◇分岐終了◇◇
||||■
|||◇分岐終了◇◇
|||
▼ →を押したとき
|||■条件分岐(変数): 【1】このコモンEvセルフ10が6と同じ
||| ◇分岐: 【1】 [ このコモンEvセルフ10が6と同じ ]の場合↓
||||■変数操作: このコモンEvセルフ3 += 1 + 0
||||■変数操作+: このコモンEvセルフ11 = X:このコモンEvセルフ3 Y:このコモンEvセルフ4のタイルのタグ番号
||||■条件分岐(変数): 【1】このコモンEvセルフ11が1以上
|||| ◇分岐: 【1】 [ このコモンEvセルフ11が1以上 ]の場合↓
|||||■動作指定:主人公 / 右向 / 右
|||||■変数操作: V1[サイコロのランダム数字用] -= 1 + 0
|||||■サウンド:SE ファイル[SESelect.wav] 音 100% 周 100% 再生 / 遅延:0フレーム
|||||■動作完了までウェイト
|||||■
||||◇分岐終了◇◇
||||■
|||◇分岐終了◇◇
|||
▼ 上を押したとき
|||■条件分岐(変数): 【1】このコモンEvセルフ10が8と同じ
||| ◇分岐: 【1】 [ このコモンEvセルフ10が8と同じ ]の場合↓
||||■変数操作: このコモンEvセルフ4 -= 1 + 0
||||■変数操作+: このコモンEvセルフ11 = X:このコモンEvセルフ3 Y:このコモンEvセルフ4のタイルのタグ番号
||||■条件分岐(変数): 【1】このコモンEvセルフ11が1以上
|||| ◇分岐: 【1】 [ このコモンEvセルフ11が1以上 ]の場合↓
|||||■動作指定:主人公 / 上向 / 上
|||||■変数操作: V1[サイコロのランダム数字用] -= 1 + 0
|||||■サウンド:SE ファイル[SESelect.wav] 音 100% 周 100% 再生 / 遅延:0フレーム
|||||■動作完了までウェイト
|||||■
||||◇分岐終了◇◇
||||■
|||◇分岐終了◇◇
|||■
||◇分岐終了◇◇
||■条件分岐(変数): 【1】V1[サイコロのランダム数字用]が0と同じ
=動きおわったときの処理
|| ◇分岐: 【1】 [ V1[サイコロのランダム数字用]が0と同じ ]の場合↓
|||■動作指定:主人公 / 下向
|||■ループ中断
|||■
||◇分岐終了◇◇
||■ウェイト:1 フレーム
||■
|◇ループここまで◇◇
YADOT様を参考に作りました。
☆感謝です☆
←目次に戻る